;(async function () {
  const express = require('express')
  // 引入处理文件的中间件
  const formidable = require('express-formidable')
  const adminRouter = require('./routes/adminRouter')
  const loginRouter = require('./routes/loginRouter')
  const verifyRouter = require('./routes/verifyToken')
  const advRouter = require('./routes/advRouter')
  const connect = require('./db/connect')
  // 如果数据库连接成功,则await下面的代码才会执行
  try {
    await connect
    console.log('数据库连接成功')
  } catch (error) {
    console.log('数据库连接失败', error)
    return
  }
  const app = express()

  // 处理静态资源的中间件
  app.use(express.static('public'))
  // 这个是处理url编码的数据
  // app.use(express.urlencoded({ extends: false }))
  // 我们前端发请求都使用axios.axios默认将请求主体的数据设置为json格式.所以服务器使用express.json处理
  // app.use(express.json())
  // 这个中间件专门处理客户端上传的文件
  // 注意: 如果使用了这个中间件,则会和express.json冲突.之前写的代码中,不要再使用req.body 了, 而是要使用req.fields
  app.use(
    formidable({
      uploadDir: './public/uploadDir', //上传的图片存储位置
      keepExtensions: true, // 保留上传图片的后缀名
    })
  )
  // 管理员对应的接口
  app.use(adminRouter)
  app.use(loginRouter)
  app.use(verifyRouter)
  app.use(advRouter)

  app.listen(5001, (err) => {
    if (err) console.log('服务器启动失败')
    else console.log('服务器启动成功')
  })
})()
